# 1、写函数,将传入的列表或元祖对象的奇数位索引对应的元素
# def shon(l,t):
#     print("用户输入的列表(list): ",l)
#     print("用户输入的元组(tuple): ",t)
#     return l,t
# user_add = shon([1, 2, 3, 4, 5, 6], (11,22,33,44,55,66))
#
# list1 = []
# answer_list = []
# for i in user_add[0]:
#     list1.append(i)
# # print(list1)
# for i in range(len(list1)):
#     if i%2 == 1:
#         answer_list.append(list1[i])
# print(f"您输入的列表奇数位索引的元素是",answer_list)
# print(f"您输入的元组奇数位索引的元素我查不出来!")
# ==

# 2、写函数,判断用户传入的对象(string,list,tuple)长度是否大于5
# def show(c):
#     if isinstance(c, str):
#         if len(c) > 5:
#             return "长度大于5"
#         else:
#             return "长度小于或等于5"
#     elif isinstance(c, list) or isinstance(c, tuple):
#         if len(c) > 5:
#             return "长度大于5"
#         else:
#             return "长度小于或等于5"
#     else:
#         return "输入的不是字符串、列表或元组"
# print(show('string'))
# print(show([1, 2, 3, 4, 5, 6]))
# print(show((1, 2, 3, 4, 5)))
# print(show({1, 2, 3, 4, 5, 6}))
# ==-==
# def show(*c):
#     if len(c) > 5:
#         return "长度大于5"
#     elif len(c) <5:
#         return "长度小于5"
# show('string','list','tuple')
# print(f"用户传入的对象:",show())
# ==

# 3、写函数,计算传入的string中,数字,字母,空格以及其它内容的个数,并返回结果
# def duixiang(string):
#     return len(string)
# string = "jfklasdjfklj123c1a6s5d4   !!@#^&*@%"
# sum = 0
# sum1 = 0
# sum2 = 0
# sum3 = 0
# for i in range(len(string)):
#     if ord(string[i])>47 and ord(string[i])<58:
#         sum += 1
#     elif ord(string[i])>80 and ord(string[i])<123:
#         sum1 += 1
#     elif ord(string[i]) == 32 :
#         sum2 += 1
#     else:
#         sum3 += 1
# print(f"空格有{sum2}个")
# print(f"字母有{sum1}个")
# print(f"数字有{sum}个")
# print(f"其他有{sum3}个")
# string1 = duixiang(string)
# print(f"string中一共有{string1}个内容")
# ==

# 4、写函数,写两个数字参数,返回较大的那个数字
# def show(a,b):
#     if a > b:
#         return a
#     else:
#         return b
# print("较大的那个数字是:",{show(45641564621,1564156410240156)})
# ==

# 5、编写一个函数cacluate, 可以接收任意多个数,返回的是一个元组.
# 元组的第一个值为所有参数的平均值, 第二个值是大于平均值的所有数.
# def show(*args):
#     num_list = list(args)
#     a = sum(num_list) / len(num_list)
#     g = [num for num in num_list if num > a]
#     return a, g
# result = show(4561,456163,456114,89851,1231)
# print("平均值：", result[0])
# print("大于平均值的数：", result[1])
# # ==


# 6、编写一个函数, 接收字符串参数, 返回一个元组,
# 元组的第一个值为大写字母的个数, 第二个值为小写字母个数.
# def Recaive_String(string1):
#     copitalization_str = 0
#     small_letter_str =0
#     for i in string1:
#         if i >= 'a' and i <='z':
#             small_letter_str += 1
#         if i >= 'A' and i <= 'Z':
#             copitalization_str +=1
#         return copitalization_str,small_letter_str
#
# print(Recaive_String('asdfhjkADFHSJKBX'))


# 7、编写函数, 接收一个列表(包含30个1~100之间的随机整形数)
# 和一个整形数k, 返回一个新列表.
# 函数需求:
# 将列表下标k之前对应(不包含k)的元素逆序;
# 将下标k及之后的元素逆序;



# 8、编写函数，从键盘输入参数x和n，计算并显示形如x+xx +xxx + xxxx + xxxxx+xxx…xxx+ 的表达式前n项的值

# 9、写函数,函数接收的4个参数分别是:姓名,性别(默认为男),年龄,地址
# 用户通过input输入这4个内容(支持持续输入,Q或q退出),并传递给函数
# 函数接收到这些内容,将其追加到student_msg文件中
# 重点:复习文件操作

# 10、写函数,接收n个数字,返回这些数字的和(动态传参)
# def show(*list1):
#     new_list = []
#     list = list1
#     for i in list:
#         new_list.append(i)
#     return list
# list = show(1,2,5,6,6,1,156,431,32)
# print(list)
# ==

# 11、在实参中传入多个可迭代对象(要有string,list,tuple,set,dict),将每个对象的每个元素都加到args或kwargs里
def Iteration_Object(*args,**kwargs):
    return f"字符串,列表,元组,集合:{args},字典:{kwargs}"


# 12、写函数,把传过来的列表中的每一个元素都用"_"拼接,并返回
# def show(*a):
#     new_list = []
#     a1 = a
#     for i in a1:
#         new_list.index(i,'_')
#     return new_list
# list = show([1,2,3,4,5])
# print(list)
# ==

# 13、写函数,传入一个数字,返回这个数的阶乘
# 重点:累乘
# def show(nums):
#     list = []
#     num = nums
#     for i in num:
#         n = i**i
#         list.append(n)
#     return list
# list = show(5)
# print(list)
# ==

# 14、写函数,返回一个扑克牌列表,里面有52项,每一项都是一个tuple
# 15、用代码写一个99乘法表
# 16、编写函数，求1+2+3+…N的和
# 17、编写一个函数，求多个数中的最大值
# def nums(a,b):
#     if a > b :
#         return a
#     else:
#         return b
# print("较大的那个数字是:", {nums(1, 2)})
# ==

# 18、编写一个函数，提取指定字符串中所有的字母，然后拼接在一起产生一个新的字符串
# def show (str):
#     letters = [i for i in str if i.isalpha()]
#     return ''.join(letters)
# user_add = "dc12a3sd156f4as5dc1a23d4f"
# dayin = show(user_add)
# print("新字符串是:",dayin)
# ==

# 19、 定义一个学生注册函数enroll()，打印学生姓名，性别，年龄，城市， 使用默认参数降低调用函数的复杂度

# 20、编写一个函数，接受一个字符串作为参数，并返回其中所有单词的首字母的大写形式
# def show(str):
#     str1 = 'asdcdas'
#     for i in str1:
#         if i in (a,z):
#             str1.join(A)
#     return str1
# str1 = 'asdjkghcasdjklasdfbhjklasdjklhasdfasd'
# dayin = show(str1)
# print(dayin)
# ==

# 21、写一个函数，求多个数的平均值
# def show(*a):
#     sum1 = sum(*a)
#     return sum1
# a = '12,45,7,1,5'
# dayin = show(a)
# print(dayin)

# 22、写一个自己的len函数，统计指定序列中元素的个数
# def show(list1):
#     num = 0
#     for i in list1:
#         num += 1
#     return num
# print(show([1,2,3]))
# ==

# 23、找出传入的列表或元组的奇数位对应的元素，并返回一个新的列表

# 24、编写一个函数，接受一个字符串列表作为参数，并返回一个字符串，其中包含所有字符串首字母的大写形式

# 25、定义函数，有一个形参，传入的是列表，数组大小不超过 100个，
# 数组中的每个元素值不允许超过 100，但是可以等于100，
# 如果列表大小超过了100个截取到第100个为止，要求返回的列表格式：
# 删除所有重复元素，使得每个元素只出现一次
# 按照数字的大小，由高到低排序返回

# 26、定义函数 getLength，打印用户传入的容器类型和数据长度
# def getLength(a):
#     a_type = type(a).__name__
#     a_chang = len(a)
#     print("容器类型:", a_type)
#     print("数据长度:", a_chang)
# list1 = [1, 2, 3, 4, 5]
# getLength(list1)
# tuple1 = (1, 2, 3, 4, 5)
# getLength(tuple1)
# dict1 = {'a': 1, 'b': 2, 'c': 3}
# getLength(dict1)
# ==

# 27、定义函数 generateNum( )
# # 返回从0~9的十个数字中随机取出4个不重复的数字组成一个字符串
#
# 28、定义函数 moreThan(num)，判断输入的数字是否大于1500
# def moreThan(num):
#     if num > 1500:
#         print("是")
#     else:
#         print("否")
# moreThan(5)

# 29、定义函数，有两个形参，第一个形参到第二个形参的范围，所有平方数之和
#
# 示例：func_a(5,10)
# 5x5+6x6+7x7+8x8+9x9+10x10...
#
# 30、写函数，检查传入字典的每一个value长度，如果大于2，
# # 那么仅保留前两个长度的内容， 并将新内容返回给调用者
#
# 31、写函数，判断用户传入的对象（字符串、列表、元组）的元素是否为空
#
# 32、编写自定义函数，完成一个简单的减法运算函数
# def nums(a,b):
#     print("减法运算函数")
#     num1 = a - b
#     return num1
# print("结果:",nums(560, 60))
# ==

# 33、编写自定义函数，可以输出自己的名字即可。
# def name():
#     print("王俊博")
# name()
# ==

# 34、编写自定义函数：剪刀石头布
# 游戏开始，初始状态下用户和电脑都有 100 分，赢一局+10 分，输一局-10 分。
# 当用户为 0 分时，游戏结束，提示游戏结束，比赛输了
# 当用户为 200 分时，游戏结束，提示游戏结束，赢得比赛、每轮比赛都输出当前的分数
# 1 代表剪刀 2 代表石头 3 代表布

# 35、编写一个函数，接受一个字符串作为参数，并返回该字符串的逆序字符串
# def show(string):
#     return string[::-1]
# user_add = input("请输入一个字符串：")
# dayin= show(user_add)
# print("逆序字符串：", dayin)
# ==

# 36、编写一个函数，接受一个数字列表作为参数，并返回其中所有偶数的列表
# def list_num(a):
#     new_list = []
#     for i in a:
#         if i%2 == 0:
#             new_list.append(i)
#     return new_list
# print(list_num([11231,4564,781,784,121,564,]))
# ==

# 37、编写一个函数，接受一个字符串列表作为参数，并返回其中最长的字符串。
# def show(string):
#     new_str = ''
#     n = string[0]
#     for i in string:
#         if len(i) > n:
#             new_str.join(i)
#     return new_str
# print(show(["1ca123d1","adsfhja","dshjakj"]))

# 38、编写一个函数，接受一个数字列表作为参数，并返回其中所有数字的平方的总和

# 39、编写一个函数，接受一个整数作为参数，并返回其阶乘
# # 运行一下试试看X-X
# import base64
# encoded_text = "5a6e5Zyo55yL5LiN5oeC5Lmf5YaZ5LiN5oeCKFQtVCk="
# decoded_text = base64.b64decode(encoded_text).decode('utf-8')
# print(decoded_text)
